import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk
import mysql.connector
from mysql.connector import Error

class RuleIntroPage:
    def __init__(self, root):
        self.root = root
        self.create_widgets()

    def create_widgets(self):
        # 连接到数据库
        try:
            self.connection = mysql.connector.connect(
                host='111.229.122.184',       # 数据库地址
                user='root',   # 数据库用户名
                password='Li2438881592?', # 数据库密码
                database='fruit_rat'  # 数据库名
            )

            # 创建一个游标对象
            self.cursor = self.connection.cursor()

            # 执行SQL查询
            self.cursor.execute("SELECT item_id, item_type, item_name, item_picture, item_function FROM your_table_name")

            # 获取所有记录列表
            records = self.cursor.fetchall()

            # 循环创建图片和文本组合
            for record in records:
                self.create_image_and_text(record[3], record[4])

        except Error as e:
            print(f"Error: {e}")
        finally:
            if self.connection.is_connected():
                self.cursor.close()
                self.connection.close()

    def create_image_and_text(self, img_path, text):
        # 创建一个框架来包含图片和文本
        group_frame = tk.Frame(self.root)
        group_frame.pack(fill=tk.BOTH, expand=True)

        try:
            # 使用PIL的Image.open直接读取图片
            img = Image.open(img_path)
            img = img.resize((200, 200), Image.ANTIALIAS)
            img_photo = ImageTk.PhotoImage(img)  # 转换为 Tkinter 兼容的图片格式

            # 创建一个图片管理类
            img_label = tk.Label(group_frame, image=img_photo)  # 把图片整合到标签类中
            img_label.image = img_photo  # 保持对图片的引用
            img_label.pack(side=tk.LEFT, padx=10, pady=10)  # 将图片放置在框架的左侧

            # 文字
            text_label = tk.Label(group_frame, text=text, wraplength=680, font=("Arial", 40))
            text_label.pack(side=tk.RIGHT, padx=10, pady=10)  # 将文字放置在框架的右侧
        except IOError as e:
            print(f"Error loading image: {e}")

# 创建主窗口
root = tk.Tk()
root.title("Image and Text Display")

# 创建RuleIntroPage实例
app = RuleIntroPage(root)

# 启动Tkinter事件循环
root.mainloop()
